home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Loadstar 166
/
166.d81
/
b.magic 6
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-08-26
|
7KB
|
278 lines
10 poke53371,0:poke788,49
20 poke56,55:poke55,192:clr:tq=ti
22 sn=1:inc=1
30 dv=peek(186):ifdv<8thendv=8
40 poke53281,0:poke53280,0:print"[147]":gosub60000
50 sys57812"magic 6 font",dv,0:poke780,0:poke781,0:poke782,56:sys65493
70 sys57812"m6.mousejr.c700",dv,0:poke780,0:poke781,0:poke782,199:sys65493
80 dimb$(37),b%(37),x%(37),y%(37),xq%(14),yq%(14),q%(14),q$(14),xm%(8),ym%(8)
90 dimfl%(37),u%(25),b2%(37),q2%(14)
100 ml=199*256:mv=ml+156:pokemv+1,158:v=53248
110 sysml:sysml+18,0,38,0,24
120 pokemv+19,128:sysml+6,14272:pokev+21,0
130 goto510
140 :
150 :rem box
160 :
170 poke646,c:poke214,y:print:print"[145]";
180 printtab(x)"[172]"left$(tp$,xx)"[187]"
190 foriq=1toyy:printtab(x)"[165]"left$(sp$,xx)"[167]":next
200 printtab(x)"[188]"left$(bt$,xx)"[190]"
210 return
220 :
230 :rem tote up
240 :
250 q%(12)=0:q%(13)=0:fori=0to5:q%(i)=0:q%(i+6)=0:forj=0to5
260 q%(i)=q%(i)+b%(i*6+j+1)
270 q%(i+6)=q%(i+6)+b%(j*6+i+1)
280 next:q$(i)=right$(" "+str$(q%(i)),3)
290 q$(i+6)=right$(" "+str$(q%(i+6)),3)
300 q%(13)=q%(13)+b%(1+7*i)
310 q%(12)=q%(12)+b%(31-5*i)
320 next
330 q$(12)=right$(" "+str$(q%(12)),3)
340 q$(13)=right$(" "+str$(q%(13)),3)
350 return
360 :
370 :rem fill grid
380 :
390 poke646,5
400 fori=1to36:b%(i)=sn+inc*(i-1):b$(i)=""+right$(" "+str$(b%(i)),3)
410 sysml+12,x%(i)+1,y%(i)+1,b$(i):next
420 return
430 :
440 :rem print totals
450 :
460 poke646,7:gosub250:fori=0to13:sysml+12,xq%(i)+1,yq%(i)+1,q$(i):next
470 return
480 :
490 :rem setup
500 :
510 tp$="[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]"
520 bt$="[164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164]"
530 sp$="@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
540 k=1:fori=0to5:forj=0to5
550 x%(k)=3+j*5:y%(k)=4+i*3
560 sysml+15,k,x%(k),x%(k)+4,y%(k),y%(k)+2
570 k=k+1:next:next
580 fori=0to3:readm$(i):next
590 data"play","help","solve","quit"
600 fori=0to5:xq%(i)=33:yq%(i)=1+3*i
610 xq%(i)=33:yq%(i)=4+3*i
620 xq%(6+i)=3+i*5:yq%(6+i)=22
630 next
640 xq%(12)=33:yq%(12)=1:xq%(13)=33:yq%(13)=22
650 fori=0to3
660 xm%(i)=4+7*i-(i=3):ym%(i)=0
670 sysml+15,37+i,xm%(i),xm%(i)+5-(i=2),ym%(i),ym%(i)+2
680 next
690 sysml+15,41,11,19,13,15:sysml+15,42,21,29,13,15
700 fori=1to24:readu%(i):next
710 data1,36,8,29,15,22,31,6,26,11,21,16,2,32,7,12,10,28,20,23,18,24,33,34
720 :
730 :rem screen
740 :
750 ifti<tq+100then750
752 print"[147]":poke53272,31
754 c=5:xx=3:yy=1:fori=0to5:forj=0to5:x=3+j*5:y=4+i*3:gosub170:next:next
760 c=7:fori=0to6:x=3+i*5:y=22:gosub170:next
770 fori=0to6:x=33:y=1+3*i:gosub170:next
780 c=15:fori=0to3:x=xm%(i):y=ym%(i):xx=4-(i=2):yy=1:gosub170
790 sysml+12,xm%(i)+1,ym%(i)+1,m$(i)
800 next
810 m6$="magic6":print"[146]";
820 fori=1to6:sysml+12,1,2+3*i,mid$(m6$,i,1):next
830 sysml+39,64
840 pokemv+2,40:pokev+21,3
850 :
860 :rem main loop
870 :
880 sysml+9
890 ifcr%<37orcr%>40then880
900 ft%=cr%:sysml+36,ft%,255,13
910 onft%-36gosub970,1490,1750,2160
920 sysml+36,ft%,255,15
930 goto880
940 :
950 :rem play
960 :
970 gosub390:gosub460
980 co=0:d%(0)=0:d%(1)=0
990 sysml+9
1000 ifcr%=0then990
1010 ifcr%<37then1050
1020 ifcr%=37thensysml+42,64:return
1030 oncr%-37gosub1490,1750,2160
1040 goto990
1050 ifcr%=d%(0)thensysml+36,d%(0),255,5:goto980
1060 d%(co)=cr%
1070 sysml+36,cr%,255,1
1080 co=co+1:ifco<2then990
1090 te=b%(d%(0)):b%(d%(0))=b%(d%(1)):b%(d%(1))=te
1100 poke646,1
1110 sysml+12,x%(d%(0))+1,y%(d%(0))+1,right$(" "+str$(b%(d%(0))),3)
1120 sysml+12,x%(d%(1))+1,y%(d%(1))+1,right$(" "+str$(b%(d%(1))),3)
1122 gosub30000
1130 gosub460
1140 sysml+36,d%(0),255,5:sysml+36,d%(1),255,5
1150 :
1160 :rem win?
1170 :
1180 fori=0to13:ifq%(i)<>111theni=13:next:goto980
1190 next
1200 c=2:x=xm%(0):y=0:xx=11:yy=1:gosub170
1210 sysml+12,xm%(0)+1,1,"you did it!"
1220 sysml+12,xm%(2)+1,1,"[155]print"
1230 sysml+12,xm%(3)+1,1,"done"
1232 gosub31000
1240 sysml+9
1250 ifcr%=39then1310
1260 ifcr%=40thensysml+42,64:return
1270 goto1240
1280 :
1290 :rem print
1300 :
1310 c=8:x=9:y=9:xx=21:yy=7:gosub170
1320 sysml+12,12,11,"get printer ready
1330 c[178]15:x[178]11:y[178]13:xx[178]7:yy[178]1:[141]170
1340 x[178]21:[141]170
1350 [158]ml[170]12,13,14,"printabort"
1360 [151]mv[170]2,42
1370 [158]ml[170]9
1380 [139]cr%[179]41[167]1370
1390 [139]cr%[178]42[167][158]ml[170]42,64:[142]
1400 [159]4,4,7
1410 k[178]1:[129]i[178]0[164]5:[129]j[178]0[164]5
1420 [152]4,[201](" "[170][196](b%(k)),3)" ";:k[178]k[170]1
1430 [130]:[152]4:[152]4:[130]:[160]4
1440 [158]ml[170]42,64:[151]186,dv:[142]
1450 [137]1450
1460 :
1470 :[143] help
1480 :
1490 [158]ml[170]39,80:[139]h1[167][158]ml[170]42,72:[137]1680
1500 h1[178]1
1510 [153]"load"
1520 c[178]8:x[178]3:y[178]1:xx[178]33:yy[178]20:[141]170
1530 [158]ml[170]12,6,y[170]2,"ortan^ortan^@ortantan^@ortantan^@=@ortantan^@@ortantan^
1540 sysml+12,6,y+3,"[221]@[173][189]@[221]@[171][192][192][179]@[221]@[176][174]@[221]@[221]@@@@@[171][192][192][174]
1550 [158]ml[170]12,6,y[170]4,"exp@@@@/@exp@@/@/tantanexp@>@/tantanexp@@/tantanexp
1560 sysml+12,5,y+6,"[158] play [129] try to get all rows,
1570 [158]ml[170]12,5,y[170]7,"columns and diagonals to add up
1580 sysml+12,5,y+8,"to 111. click on one number,
1590 [158]ml[170]12,5,y[170]9,"then another to swap them.
1600 sysml+12,5,y+11,"[158] solve [129] see a pattern of swaps
1610 [158]ml[170]12,5,y[170]12,"that'll always make a magic
1620 sysml+12,5,y+13,"square out of any ordered set.
1630 [158]ml[170]12,5,y[170]15,"click twice on sys play for to start
1640 sysml+12,5,y+16,"over. when you find a solution
1650 [158]ml[170]12,5,y[170]17,"you may print it out.
1660 sysml+12,5,y+19," press button
1670 [158]ml[170]39,72
1680 [158]ml[170]9
1690 [139]l2%[178]0[167]1680
1700 [158]ml[170]42,80
1710 [142]
1720 :
1730 :[143] solve
1740 :
1750 [158]ml[170]39,94
1752 [158]ml[170]36,39,255,13
1760 c[178]8:x[178]5:y[178]6:xx[178]29:yy[178]10:[141]170
1770 [158]ml[170]12,7,y[170]2,"here is an easy-to-memorize
1780 sysml+12,7,y+3,"set of swaps that will make
1790 [158]ml[170]12,7,y[170]4,"a 6x6 magic square out of
1800 sysml+12,7,y+5,"any ordered set of numbers.
1810 c[178]15:x[178]11:y[178]13:xx[178]7:yy[178]1:[141]170
1820 x[178]21:[141]170
1830 [158]ml[170]12,13,14,"go onabort"
1840 [151]mv[170]2,42
1850 [158]ml[170]9
1860 [139]cr%[178]41[167]1890
1870 [139]cr%[178]42[167][151]mv[170]2,40:[158]ml[170]42,94:[142]
1880 [137]1850
1890 [129]i[178]1[164]36:b2%(i)[178]b%(i):[130]:[129]i[178]0[164]13:q2%(i)[178]q%(i):[130]
1900 [158]ml[170]42,64:[141]390:[141]460
1902 [158]ml[170]36,39,255,13
1910 [129]w[178]1[164]24[169]2
1920 [158]ml[170]36,u%(w),255,1:[158]ml[170]36,u%(w[170]1),255,1
1930 te[178]b%(u%(w)):b%(u%(w))[178]b%(u%(w[170]1)):b%(u%(w[170]1))[178]te
1940 [151]646,1
1950 [158]ml[170]12,x%(u%(w))[170]1,y%(u%(w))[170]1,[201](" "[170][196](b%(u%(w))),3)
1960 [158]ml[170]12,x%(u%(w[170]1))[170]1,y%(u%(w[170]1))[170]1,[201](" "[170][196](b%(u%(w[170]1))),3)
1970 [141]460:[158]ml[170]24,40
1980 [158]ml[170]36,u%(w),255,5:[158]ml[170]36,u%(w[170]1),255,5
1990 [130]
2000 c[178]2:x[178]xm%(0):y[178]0:xx[178]11:yy[178]1:[141]170
2002 [158]ml[170]36,39,255,15
2010 [158]ml[170]12,xm%(0)[170]1,1," that's it "
2020 [158]ml[170]12,xm%(2)[170]1,1,"listagain"
2030 [158]ml[170]12,xm%(3)[170]1,1,"done"
2040 [158]ml[170]9
2050 [139]cr%[178]39[167]1900
2060 [139]cr%[178]40[167]2080
2070 [137]2040
2080 [158]ml[170]42,94
2090 [129]i[178]1[164]36:b%(i)[178]b2%(i):[130]
2100 [129]i[178]0[164]13:q%(i)[178]q2%(i):[130]
2110 [151]mv[170]2,40:[142]
2120 [137]2120
2130 :
2140 :[143] quit
2150 :
2160 [158]ml[170]39,88
2170 c[178]8:x[178]9:y[178]9:xx[178]21:yy[178]7:[141]170
2180 [158]ml[170]12,14,11,"are you sure?
2190 c=15:x=11:y=13:xx=7:yy=1:gosub170
2200 x=21:gosub170
2210 sysml+12,13,14," quitabort"
2220 pokemv+2,42
2230 sysml+9
2240 ifcr%=41thensysml+3:pokev+21,0:print"[147]":goto40000
2250 ifcr%=42thenpokemv+2,40:sysml+42,88:return
2260 goto2230
10000 d=peek(186):n$="0:b.magic 6":open15,d,15,"s"+n$:close15:saven$,d:end
29997 :
29998